desc:buffer underrun effect

slider1:1<1,64,1>buffer size in 1/64th notes
slider2:0<0,1,1{off,on}>Effect On/Off

@init

bufL0 = 0;
bufR0 = 100000;
bufL1 = 200000;
bufR1 = 300000;
pos = 0;
copy_to_buffer = 1;

samples_per_beat = (60*srate)/tempo;
samples_per_64th = samples_per_beat / 8;
bufsize = slider1 * samples_per_64th;

@block

samples_per_beat = (60*srate)/tempo;
samples_per_64th = samples_per_beat / 8;
bufsize = slider1 * samples_per_64th;

@slider
slider2 ? effect_on = 1;

@sample

(play_state == 1 || play_state == 5) ? (

  bufL0[pos] = spl0;
  bufR0[pos] = spl1;

copy_to_buffer < 0 ? (
  bufL1[pos] = spl0;
  bufR1[pos] = spl1;
  );

effect_on ? (
  spl0 = bufL1[pos];
  spl1 = bufR1[pos];
  ) : (
  spl0 = bufL0[pos];
  spl1 = bufR0[pos];
  );

pos += 1;
pos > bufsize ? (
  pos -= bufsize;
  copy_to_buffer = effect_on ? (copy_to_buffer * -1) : 1;
  );

);

@gfx 100

gfx_x = 20; gfx_y = 20;
gfx_r = 1; gfx_g = 1; gfx_b = 1; gfx_a = 1;

gfx_drawstr("Mouse Button Down for Buffer Underrun Effect");

mouse_cap == 1 ? effect_on = 1;

(mouse_cap == 0 && !slider2) ? effect_on = 0;
